﻿class A<T, U> {
    public class B<K, T> {

        public  class C {

            public static event System.EventHandler<System.EventArgs> fa;

            public void main() {
                var d = typeof (B<int, int>);
                var c = new C();
            }

        }

        public C e;
    }

    public B<int, int> d;
}


internal class AAA {

    void fn(params object[] aa) {
        
    }

    void fn(__arglist) {
        
    }

    public abstract class A {

        public abstract void fn();

        public static void fn2() {}

    }

    public static void Main() {

        var a = typeof(A<,>.B<,>.C);

        var b = new A<bool, int>();
        var c = new A<bool, int>.B<float, double>.C();
        c.main();

        System.Console.WriteLine(a.GetGenericArguments());

        System.Console.Read();

    }

}